package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * JDBC java数据库链接
 */
public class JDBCDemo1 {
    public static void main(String[] args) {
        /*
            使用JDBC链接数据库的大致流程:
            1:加载驱动
            2:使用DriverManager(JDBC提供的)再通过加载的驱动与数据库建立链接:Connection对象
            3:通过链接对象创建语句对象Statement
            4:通过语句对象执行SQL语句
            5:如果执行的是查询语句还会得到结果集ResultSet，对其进行遍历获取查询结果
            6:关闭数据库链接
         */
        try {
            //1加载驱动(Mysql驱动)
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2
            Connection connection = DriverManager.getConnection(
                    //jdbc:mysql://localhost:3307/数据库名?一堆参数...
                    //数据库名就是我们学习数据库时，操作一个库前，进行:USE 数据库名。
                    "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                    "root",
                    "root");
            System.out.println("连接数据库成功!");

            //3
            Statement statement = connection.createStatement();
            /*
                创建一张表:user
                CREATE TABLE user(
                    id INT PRIMARY KEY AUTO_INCREMENT,
                    username VARCHAR(30),
                    password VARCHAR(30),
                    nickname VARCHAR(30),
                    age INT(3)
                )
             */
            String sql = "CREATE TABLE user( " +
                    "                    id INT PRIMARY KEY AUTO_INCREMENT, " +
                    "                    username VARCHAR(30), " +
                    "                    password VARCHAR(30), " +
                    "                    nickname VARCHAR(30), " +
                    "                    age INT(3) " +
                    "                )";
            /*
                Statement提供的方法:
                public boolean execute(String sql)
                该方法的返回值表示执行后是否产生了查询结果集。如果SQL语句失败会直接抛出异常。
                由于DML和DQL语句都有专门的对应方法，因此execute方法常用来执行DDL语句
             */
            statement.execute(sql);
            System.out.println("创建完毕");

            connection.close();


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}








